import ajax from 'axios'
import { setToken, getToken, removeToken } from '@/utils/token'
import router from '@/router'
import { refreshTokenAPI } from '@/api'
import { Notify } from 'vant'

// 新建一个新的axios实例
const axios = ajax.create({
  baseURL: 'http://geek.itheima.net' // 基地址
})

axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // 统一配置请求头
  if (!config.headers.Authorization) {
    config.headers.Authorization = `Bearer ${getToken('token')}`
  }
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response
}, async function (error) {
  // 对响应错误做点什么
  if (error.response.status === 401) {
    removeToken('token')
    const res = await refreshTokenAPI()
    console.log(res)
    setToken('token', res.data.data.token)
    error.config.headers.Authorization = `Bearer ${getToken('token')}`
    return ajax(error.config)
  } else if (error.response.status === 500 && error.config.url === '/v1_0/authorizations') {
    Notify({
      type: 'danger',
      message: '身份过期，请重新登陆'
    })
    removeToken('token')
    removeToken('refresh_token')
    router.replace({
      path: '/login',
      query: {
        rePage: router.currentRoute.fullPath
      }
    })
  }
  return Promise.reject(error)
})

export default axios
